﻿using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Globalization;
using AudiPyme.BLL;
using System.IO;
using System.Data;
using AudiPyme.DAL;
using System.Web.UI.HtmlControls;
namespace AudiPyme.UI
{
    public partial class ActivosAdd : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            int IdEmpresa = DatosEmpresa();
            if (IdEmpresa != -1)
            {
                //se recoge el número de activos de una empresa y se generan las opciones de la página según la situación en la que esté la empresa
                int NumeroActivosEmpresa = ActivosEmpresaFactory.NumeroTotalesActivosEmpresa(IdEmpresa);
                GeneraOpciones(IdEmpresa, NumeroActivosEmpresa);
                PnlActivos.Visible = true;
            }
            else
            {
                MuestraMensaje("No se pudo recoger la empresa asociada al usuario");
            }
        }

        private void GeneraOpciones(int EmpresaUsuario, int NumeroActivosEmpresa)
        {
            try
            {
                if (EmpresaUsuario != 0)
                {
                    //Añado la opcion Añadir Activos
                    HtmlGenericControl opc1 = new HtmlGenericControl("li");
                    ListaOpciones.Controls.Add(opc1);
                    HtmlGenericControl anchor = new HtmlGenericControl("a");
                    anchor.Attributes.Add("href", "ActivosPrincipal.aspx");
                    anchor.InnerText = "Activos Principal";
                    opc1.Controls.Add(anchor);
                }
                //Si hay algun activo de la Empresa
                if (NumeroActivosEmpresa != 0)
                {
                    //Añade la opcion de gestionar activos
                    HtmlGenericControl opc1 = new HtmlGenericControl("li");
                    ListaOpciones.Controls.Add(opc1);
                    HtmlGenericControl anchor = new HtmlGenericControl("a");
                    anchor.Attributes.Add("href", "ActivosConsulta.aspx");
                    anchor.InnerText = "Gestionar Activos";
                    opc1.Controls.Add(anchor);
                }
            }
            catch (Exception e1)
            {
                e1.ToString();
            }

        }

        protected void BtnInsertar_Click(object sender, EventArgs e)
        {
            int IdEmpresa = DatosEmpresa();
            if (IdEmpresa != -1)
            {
                Page.Validate("ValidarFormulario");
                if (Page.IsValid)
                {
                    //Recogemos los atributos del activo del formulario
                    String Nombre = TxtNombre.Text;
                    String Descripcion = TxtDescrip.Text;
                    String TipoActivo = DdlTipoActivo.SelectedValue;
                    int CosteActivo;
                    int.TryParse(TxtCosteActivo.Text, out CosteActivo);
                    int ValorEstrategico;
                    try
                    {
                        int.TryParse(DdlValorEstrategico.SelectedValue, out ValorEstrategico);
                        ActivosEmpresaNegocio.InsertaActivo(IdEmpresa, Nombre, Descripcion, TipoActivo, CosteActivo, ValorEstrategico);
                        MuestraMensajeRedirige("Activo añadido correctamente", "ActivosAdd");
                    }
                    catch (Exception e1)
                    {
                        e1.ToString();
                        MuestraMensaje("Error al intentar añadir el activo");
                    }
                }
                else
                {
                    MuestraMensaje("El Activo no pudo ser Insertado al No pasar la validación de Datos");
                }
            }
            else
            {
                MuestraMensaje("No se pudo recoger el Id de Empresa");
                PnlActivos.Visible = false;
            }
        }

        private void MuestraMensaje(string Mensaje)
        {
            StringBuilder SB = new StringBuilder();
            SB.Append("alert('");
            SB.Append(Mensaje.Replace("\n", "\\n").Replace("\r", "").Replace("'", "\\'"));
            SB.Append("');");
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Success", SB.ToString(), true);
        }

        private void MuestraMensajeRedirige(string Mensaje, string Pagina)
        {
            StringBuilder SB = new StringBuilder();
            SB.Append("alert('");
            SB.Append(Mensaje.Replace("\n", "\\n").Replace("\r", "").Replace("'", "\\'"));
            SB.Append("');");
            SB.Append("var vers = navigator.appVersion;if(vers.indexOf('MSIE 7.0') != -1) { window.location='" + Pagina + ".aspx';} else{ window.location='" + Pagina + ".aspx'; }");
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Success", SB.ToString(), true);
        }


        private int DatosEmpresa()
        {
            try
            {
                int IdEmpresa = -1;
                String nombreUsuario = (String)Session["nombreUsuario"];
                IdEmpresa = UsuariosFactory.EmpresaUsuario(nombreUsuario);
                if (IdEmpresa == 0)
                {
                    MuestraMensaje("El usuario " + nombreUsuario + " no esta asociado a una empresa");
                    return -1;
                }
                else
                {
                    return IdEmpresa;
                }
            }
            catch (Exception e1)
            {
                e1.ToString();
                Session.Abandon();
                MuestraMensajeRedirige("Error al recoger la variable de sesión. La aplicación se cerrará por motivos de seguridad", "InicioSesion");
                return -1;
            }
        }
    }
}